package findMin

func findMin2(nums []int) int {
	l := len(nums)
	if l == 1 {
		return nums[0]
	}
	if nums[0] < nums[l-1] {
		return nums[0]
	}

	var k int
	tmp := nums[0]
	i := 0
	j := l - 1
	for {
		if i == j {
			return nums[i]
		}
		k = (j-i)/2 + i
		if k == i {
			if nums[i] <= nums[j] {
				return nums[i]
			} else {
				return nums[j]
			}
		}
		if tmp <= nums[k] {
			i = k
			continue
		}
		if tmp > nums[k] {
			j = k
			tmp = nums[k]
			continue
		}
	}
}

// func main() {
// 	s := []int{11, 13, 15, 17}
// 	fmt.Println(findMin(s))
// }
